/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
 */

/*
 * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/*
 * This file was initially generated using rpcgen.  The rpcgen-erated
 * code used tail recursion to implement linked lists which resulted
 * in various crashes due to blown stacks.  If the NFS4 protocol changes
 * be sure to either use the NFS4-friendly rpcgen (doesn't use tail
 * recursion) or do the xdr by hand.
 *
 * CAUTION:  This file is kept in sync with it's uts counterpart:
 *
 *	usr/src/uts/common/fs/nfs/nfs4_xdr.c
 *
 * However, it is not an exact copy.  NEVER copy uts's nfs4_xdr.c
 * directly over this file.   Changes from the uts version must be
 * integrated by hand into this file.
 */

#include <rpcsvc/nfs4_prot.h>
#include <nfs/nfs4.h>
#include <malloc.h>

#define	IGNORE_RDWR_DATA

extern int nfs4_skip_bytes;

bool_t
xdr_nfs_ftype4(register XDR *xdrs, nfs_ftype4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfsstat4(register XDR *xdrs, nfsstat4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_bitmap4(register XDR *xdrs, bitmap4 *objp)
{

	if (!xdr_array(xdrs, (char **)&objp->bitmap4_val,
	    (uint_t *)&objp->bitmap4_len, ~0,
	    sizeof (uint32_t), (xdrproc_t)xdr_uint32_t))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_offset4(register XDR *xdrs, offset4 *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_count4(register XDR *xdrs, count4 *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_length4(register XDR *xdrs, length4 *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_clientid4(register XDR *xdrs, clientid4 *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_seqid4(register XDR *xdrs, seqid4 *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_utf8string(register XDR *xdrs, utf8string *objp)
{

	if (!xdr_bytes(xdrs, (char **)&objp->utf8string_val,
	    (uint_t *)&objp->utf8string_len, NFS4_MAX_UTF8STRING))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_component4(register XDR *xdrs, component4 *objp)
{

	if (!xdr_utf8string(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_pathname4(register XDR *xdrs, pathname4 *objp)
{

	if (!xdr_array(xdrs, (char **)&objp->pathname4_val,
	    (uint_t *)&objp->pathname4_len, NFS4_MAX_PATHNAME4,
	    sizeof (component4), (xdrproc_t)xdr_component4))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfs_cookie4(register XDR *xdrs, nfs_cookie4 *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_linktext4(register XDR *xdrs, linktext4 *objp)
{

	if (!xdr_bytes(xdrs, (char **)&objp->linktext4_val,
	    (uint_t *)&objp->linktext4_len, NFS4_MAX_LINKTEXT4))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_ascii_REQUIRED4(register XDR *xdrs, ascii_REQUIRED4 *objp)
{

	if (!xdr_utf8string(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_sec_oid4(register XDR *xdrs, sec_oid4 *objp)
{

	if (!xdr_bytes(xdrs, (char **)&objp->sec_oid4_val,
	    (uint_t *)&objp->sec_oid4_len, NFS4_MAX_SECOID4))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_qop4(register XDR *xdrs, qop4 *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_mode4(register XDR *xdrs, mode4 *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_changeid4(register XDR *xdrs, changeid4 *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_verifier4(register XDR *xdrs, verifier4 objp)
{

	if (!xdr_opaque(xdrs, objp, NFS4_VERIFIER_SIZE))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfstime4(register XDR *xdrs, nfstime4 *objp)
{

	if (!xdr_int64_t(xdrs, &objp->seconds))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->nseconds))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_time_how4(register XDR *xdrs, time_how4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_settime4(register XDR *xdrs, settime4 *objp)
{

	if (!xdr_time_how4(xdrs, &objp->set_it))
		return (FALSE);
	switch (objp->set_it) {
	case SET_TO_CLIENT_TIME4:
		if (!xdr_nfstime4(xdrs, &objp->settime4_u.time))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_nfs_fh4(register XDR *xdrs, nfs_fh4 *objp)
{

	if (!xdr_bytes(xdrs, (char **)&objp->nfs_fh4_val,
	    (uint_t *)&objp->nfs_fh4_len, NFS4_FHSIZE))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fsid4(register XDR *xdrs, fsid4 *objp)
{

	if (!xdr_uint64_t(xdrs, &objp->major))
		return (FALSE);
	if (!xdr_uint64_t(xdrs, &objp->minor))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fs_location4(register XDR *xdrs, fs_location4 *objp)
{

	if (!xdr_array(xdrs, (char **)&objp->server.server_val,
	    (uint_t *)&objp->server.server_len, ~0,
	    sizeof (utf8string), (xdrproc_t)xdr_utf8string))
		return (FALSE);
	if (!xdr_pathname4(xdrs, &objp->rootpath))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fs_locations4(register XDR *xdrs, fs_locations4 *objp)
{

	if (!xdr_pathname4(xdrs, &objp->fs_root))
		return (FALSE);
	if (!xdr_array(xdrs, (char **)&objp->locations.locations_val,
	    (uint_t *)&objp->locations.locations_len, ~0,
	    sizeof (fs_location4), (xdrproc_t)xdr_fs_location4))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_acetype4(register XDR *xdrs, acetype4 *objp)
{

	if (!xdr_u_int(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_aceflag4(register XDR *xdrs, aceflag4 *objp)
{

	if (!xdr_u_int(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_acemask4(register XDR *xdrs, acemask4 *objp)
{

	if (!xdr_u_int(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfsace4(register XDR *xdrs, nfsace4 *objp)
{
	if (!xdr_acetype4(xdrs, &objp->type))
		return (FALSE);
	if (!xdr_aceflag4(xdrs, &objp->flag))
		return (FALSE);
	if (!xdr_acemask4(xdrs, &objp->access_mask))
		return (FALSE);
	if (xdrs->x_op == XDR_DECODE) {
		objp->who.utf8string_val = NULL;
		objp->who.utf8string_len = 0;
	}
	return (xdr_bytes(xdrs, (char **)&objp->who.utf8string_val,
	    (uint_t *)&objp->who.utf8string_len,
	    NFS4_MAX_UTF8STRING));
}

bool_t
xdr_specdata4(register XDR *xdrs, specdata4 *objp)
{

	if (!xdr_uint32_t(xdrs, &objp->specdata1))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->specdata2))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_supported_attrs(register XDR *xdrs, fattr4_supported_attrs *objp)
{

	if (!xdr_bitmap4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_type(register XDR *xdrs, fattr4_type *objp)
{

	if (!xdr_nfs_ftype4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_fh_expire_type(register XDR *xdrs, fattr4_fh_expire_type *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_change(register XDR *xdrs, fattr4_change *objp)
{

	if (!xdr_changeid4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_size(register XDR *xdrs, fattr4_size *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_link_support(register XDR *xdrs, fattr4_link_support *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_symlink_support(register XDR *xdrs, fattr4_symlink_support *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_named_attr(register XDR *xdrs, fattr4_named_attr *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_fsid(register XDR *xdrs, fattr4_fsid *objp)
{

	if (!xdr_fsid4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_unique_handles(register XDR *xdrs, fattr4_unique_handles *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_lease_time(register XDR *xdrs, fattr4_lease_time *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_rdattr_error(register XDR *xdrs, fattr4_rdattr_error *objp)
{

	if (!xdr_nfsstat4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_acl(register XDR *xdrs, fattr4_acl *objp)
{

	if (!xdr_array(xdrs, (char **)&objp->fattr4_acl_val,
	    (uint_t *)&objp->fattr4_acl_len, ~0,
	    sizeof (nfsace4), (xdrproc_t)xdr_nfsace4))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_aclsupport(register XDR *xdrs, fattr4_aclsupport *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_archive(register XDR *xdrs, fattr4_archive *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_cansettime(register XDR *xdrs, fattr4_cansettime *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_case_insensitive(register XDR *xdrs, fattr4_case_insensitive *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_case_preserving(register XDR *xdrs, fattr4_case_preserving *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_chown_restricted(register XDR *xdrs, fattr4_chown_restricted *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_fileid(register XDR *xdrs, fattr4_fileid *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_files_avail(register XDR *xdrs, fattr4_files_avail *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_filehandle(register XDR *xdrs, fattr4_filehandle *objp)
{

	if (!xdr_nfs_fh4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_files_free(register XDR *xdrs, fattr4_files_free *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_files_total(register XDR *xdrs, fattr4_files_total *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_fs_locations(register XDR *xdrs, fattr4_fs_locations *objp)
{

	if (!xdr_fs_locations4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_hidden(register XDR *xdrs, fattr4_hidden *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_homogeneous(register XDR *xdrs, fattr4_homogeneous *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_maxfilesize(register XDR *xdrs, fattr4_maxfilesize *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_maxlink(register XDR *xdrs, fattr4_maxlink *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_maxname(register XDR *xdrs, fattr4_maxname *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_maxread(register XDR *xdrs, fattr4_maxread *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_maxwrite(register XDR *xdrs, fattr4_maxwrite *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_mimetype(register XDR *xdrs, fattr4_mimetype *objp)
{

	if (!xdr_ascii_REQUIRED4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_mode(register XDR *xdrs, fattr4_mode *objp)
{

	if (!xdr_mode4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_mounted_on_fileid(register XDR *xdrs, fattr4_mounted_on_fileid *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_no_trunc(register XDR *xdrs, fattr4_no_trunc *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_numlinks(register XDR *xdrs, fattr4_numlinks *objp)
{

	if (!xdr_uint32_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_owner(register XDR *xdrs, fattr4_owner *objp)
{

	if (!xdr_utf8string(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_owner_group(register XDR *xdrs, fattr4_owner_group *objp)
{

	if (!xdr_utf8string(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_quota_avail_hard(register XDR *xdrs, fattr4_quota_avail_hard *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_quota_avail_soft(register XDR *xdrs, fattr4_quota_avail_soft *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_quota_used(register XDR *xdrs, fattr4_quota_used *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_rawdev(register XDR *xdrs, fattr4_rawdev *objp)
{

	if (!xdr_specdata4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_space_avail(register XDR *xdrs, fattr4_space_avail *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_space_free(register XDR *xdrs, fattr4_space_free *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_space_total(register XDR *xdrs, fattr4_space_total *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_space_used(register XDR *xdrs, fattr4_space_used *objp)
{

	if (!xdr_uint64_t(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_system(register XDR *xdrs, fattr4_system *objp)
{

	if (!xdr_bool(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_time_access(register XDR *xdrs, fattr4_time_access *objp)
{

	if (!xdr_nfstime4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_time_access_set(register XDR *xdrs, fattr4_time_access_set *objp)
{

	if (!xdr_settime4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_time_backup(register XDR *xdrs, fattr4_time_backup *objp)
{

	if (!xdr_nfstime4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_time_create(register XDR *xdrs, fattr4_time_create *objp)
{

	if (!xdr_nfstime4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_time_delta(register XDR *xdrs, fattr4_time_delta *objp)
{

	if (!xdr_nfstime4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_time_metadata(register XDR *xdrs, fattr4_time_metadata *objp)
{

	if (!xdr_nfstime4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_time_modify(register XDR *xdrs, fattr4_time_modify *objp)
{

	if (!xdr_nfstime4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4_time_modify_set(register XDR *xdrs, fattr4_time_modify_set *objp)
{

	if (!xdr_settime4(xdrs, objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_attrlist4(register XDR *xdrs, attrlist4 *objp)
{

	if (!xdr_bytes(xdrs, (char **)&objp->attrlist4_val,
	    (uint_t *)&objp->attrlist4_len, ~0))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_fattr4(register XDR *xdrs, fattr4 *objp)
{

	if (!xdr_bitmap4(xdrs, &objp->attrmask))
		return (FALSE);
	if (!xdr_attrlist4(xdrs, &objp->attr_vals))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_change_info4(register XDR *xdrs, change_info4 *objp)
{

	if (!xdr_bool(xdrs, &objp->atomic))
		return (FALSE);
	if (!xdr_changeid4(xdrs, &objp->before))
		return (FALSE);
	if (!xdr_changeid4(xdrs, &objp->after))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_clientaddr4(register XDR *xdrs, clientaddr4 *objp)
{

	if (!xdr_string(xdrs, &objp->na_r_netid, ~0))
		return (FALSE);
	if (!xdr_string(xdrs, &objp->na_r_addr, ~0))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_cb_client4(register XDR *xdrs, cb_client4 *objp)
{

	if (!xdr_u_int(xdrs, &objp->cb_program))
		return (FALSE);
	if (!xdr_clientaddr4(xdrs, &objp->cb_location))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_stateid4(register XDR *xdrs, stateid4 *objp)
{

	if (!xdr_uint32_t(xdrs, &objp->seqid))
		return (FALSE);
	if (!xdr_opaque(xdrs, objp->other, 12))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfs_client_id4(register XDR *xdrs, nfs_client_id4 *objp)
{

	if (!xdr_verifier4(xdrs, objp->verifier))
		return (FALSE);
	if (!xdr_bytes(xdrs, (char **)&objp->id.id_val,
	    (uint_t *)&objp->id.id_len, NFS4_OPAQUE_LIMIT))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_open_owner4(register XDR *xdrs, open_owner4 *objp)
{

	if (!xdr_clientid4(xdrs, &objp->clientid))
		return (FALSE);
	if (!xdr_bytes(xdrs, (char **)&objp->owner.owner_val,
	    (uint_t *)&objp->owner.owner_len, NFS4_OPAQUE_LIMIT))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_lock_owner4(register XDR *xdrs, lock_owner4 *objp)
{

	if (!xdr_clientid4(xdrs, &objp->clientid))
		return (FALSE);
	if (!xdr_bytes(xdrs, (char **)&objp->owner.owner_val,
	    (uint_t *)&objp->owner.owner_len, NFS4_OPAQUE_LIMIT))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfs_lock_type4(register XDR *xdrs, nfs_lock_type4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_ACCESS4args(register XDR *xdrs, ACCESS4args *objp)
{

	if (!xdr_uint32_t(xdrs, &objp->access))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_ACCESS4resok(register XDR *xdrs, ACCESS4resok *objp)
{

	if (!xdr_uint32_t(xdrs, &objp->supported))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->access))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_ACCESS4res(register XDR *xdrs, ACCESS4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_ACCESS4resok(xdrs, &objp->ACCESS4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_CLOSE4args(register XDR *xdrs, CLOSE4args *objp)
{

	if (!xdr_seqid4(xdrs, &objp->seqid))
		return (FALSE);
	if (!xdr_stateid4(xdrs, &objp->open_stateid))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_CLOSE4res(register XDR *xdrs, CLOSE4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_stateid4(xdrs, &objp->CLOSE4res_u.open_stateid))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_COMMIT4args(register XDR *xdrs, COMMIT4args *objp)
{

	if (!xdr_offset4(xdrs, &objp->offset))
		return (FALSE);
	if (!xdr_count4(xdrs, &objp->count))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_COMMIT4resok(register XDR *xdrs, COMMIT4resok *objp)
{

	if (!xdr_verifier4(xdrs, objp->writeverf))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_COMMIT4res(register XDR *xdrs, COMMIT4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_COMMIT4resok(xdrs, &objp->COMMIT4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_createtype4(register XDR *xdrs, createtype4 *objp)
{

	if (!xdr_nfs_ftype4(xdrs, &objp->type))
		return (FALSE);
	switch (objp->type) {
	case NF4LNK:
		if (!xdr_linktext4(xdrs, &objp->createtype4_u.linkdata))
			return (FALSE);
		break;
	case NF4BLK:
	case NF4CHR:
		if (!xdr_specdata4(xdrs, &objp->createtype4_u.devdata))
			return (FALSE);
		break;
	case NF4SOCK:
	case NF4FIFO:
	case NF4DIR:
		break;
	}
	return (TRUE);
}

bool_t
xdr_CREATE4args(register XDR *xdrs, CREATE4args *objp)
{

	if (!xdr_createtype4(xdrs, &objp->objtype))
		return (FALSE);
	if (!xdr_component4(xdrs, &objp->objname))
		return (FALSE);
	if (!xdr_fattr4(xdrs, &objp->createattrs))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_CREATE4resok(register XDR *xdrs, CREATE4resok *objp)
{

	if (!xdr_change_info4(xdrs, &objp->cinfo))
		return (FALSE);
	if (!xdr_bitmap4(xdrs, &objp->attrset))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_CREATE4res(register XDR *xdrs, CREATE4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_CREATE4resok(xdrs, &objp->CREATE4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_DELEGPURGE4args(register XDR *xdrs, DELEGPURGE4args *objp)
{

	if (!xdr_clientid4(xdrs, &objp->clientid))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_DELEGPURGE4res(register XDR *xdrs, DELEGPURGE4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_DELEGRETURN4args(register XDR *xdrs, DELEGRETURN4args *objp)
{

	if (!xdr_stateid4(xdrs, &objp->deleg_stateid))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_DELEGRETURN4res(register XDR *xdrs, DELEGRETURN4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_GETATTR4args(register XDR *xdrs, GETATTR4args *objp)
{

	if (!xdr_bitmap4(xdrs, &objp->attr_request))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_GETATTR4resok(register XDR *xdrs, GETATTR4resok *objp)
{

	if (!xdr_fattr4(xdrs, &objp->obj_attributes))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_GETATTR4res(register XDR *xdrs, GETATTR4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_GETATTR4resok(xdrs, &objp->GETATTR4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_GETFH4resok(register XDR *xdrs, GETFH4resok *objp)
{

	if (!xdr_nfs_fh4(xdrs, &objp->object))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_GETFH4res(register XDR *xdrs, GETFH4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_GETFH4resok(xdrs, &objp->GETFH4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_LINK4args(register XDR *xdrs, LINK4args *objp)
{

	if (!xdr_component4(xdrs, &objp->newname))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_LINK4resok(register XDR *xdrs, LINK4resok *objp)
{

	if (!xdr_change_info4(xdrs, &objp->cinfo))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_LINK4res(register XDR *xdrs, LINK4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_LINK4resok(xdrs, &objp->LINK4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_open_to_lock_owner4(register XDR *xdrs, open_to_lock_owner4 *objp)
{

	if (!xdr_seqid4(xdrs, &objp->open_seqid))
		return (FALSE);
	if (!xdr_stateid4(xdrs, &objp->open_stateid))
		return (FALSE);
	if (!xdr_seqid4(xdrs, &objp->lock_seqid))
		return (FALSE);
	if (!xdr_lock_owner4(xdrs, &objp->lock_owner))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_exist_lock_owner4(register XDR *xdrs, exist_lock_owner4 *objp)
{

	if (!xdr_stateid4(xdrs, &objp->lock_stateid))
		return (FALSE);
	if (!xdr_seqid4(xdrs, &objp->lock_seqid))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_locker4(register XDR *xdrs, locker4 *objp)
{

	if (!xdr_bool(xdrs, &objp->new_lock_owner))
		return (FALSE);
	switch (objp->new_lock_owner) {
	case TRUE:
		if (!xdr_open_to_lock_owner4(xdrs, &objp->locker4_u.open_owner))
			return (FALSE);
		break;
	case FALSE:
		if (!xdr_exist_lock_owner4(xdrs, &objp->locker4_u.lock_owner))
			return (FALSE);
		break;
	default:
		return (FALSE);
	}
	return (TRUE);
}

bool_t
xdr_LOCK4args(register XDR *xdrs, LOCK4args *objp)
{

	if (!xdr_nfs_lock_type4(xdrs, &objp->locktype))
		return (FALSE);
	if (!xdr_bool(xdrs, &objp->reclaim))
		return (FALSE);
	if (!xdr_offset4(xdrs, &objp->offset))
		return (FALSE);
	if (!xdr_length4(xdrs, &objp->length))
		return (FALSE);
	if (!xdr_locker4(xdrs, &objp->locker))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_LOCK4denied(register XDR *xdrs, LOCK4denied *objp)
{

	if (!xdr_offset4(xdrs, &objp->offset))
		return (FALSE);
	if (!xdr_length4(xdrs, &objp->length))
		return (FALSE);
	if (!xdr_nfs_lock_type4(xdrs, &objp->locktype))
		return (FALSE);
	if (!xdr_lock_owner4(xdrs, &objp->owner))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_LOCK4resok(register XDR *xdrs, LOCK4resok *objp)
{

	if (!xdr_stateid4(xdrs, &objp->lock_stateid))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_LOCK4res(register XDR *xdrs, LOCK4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_LOCK4resok(xdrs, &objp->LOCK4res_u.resok4))
			return (FALSE);
		break;
	case NFS4ERR_DENIED:
		if (!xdr_LOCK4denied(xdrs, &objp->LOCK4res_u.denied))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_LOCKT4args(register XDR *xdrs, LOCKT4args *objp)
{

	if (!xdr_nfs_lock_type4(xdrs, &objp->locktype))
		return (FALSE);
	if (!xdr_offset4(xdrs, &objp->offset))
		return (FALSE);
	if (!xdr_length4(xdrs, &objp->length))
		return (FALSE);
	if (!xdr_lock_owner4(xdrs, &objp->owner))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_LOCKT4res(register XDR *xdrs, LOCKT4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4ERR_DENIED:
		if (!xdr_LOCK4denied(xdrs, &objp->LOCKT4res_u.denied))
			return (FALSE);
		break;
	case NFS4_OK:
		break;
	}
	return (TRUE);
}

bool_t
xdr_LOCKU4args(register XDR *xdrs, LOCKU4args *objp)
{

	if (!xdr_nfs_lock_type4(xdrs, &objp->locktype))
		return (FALSE);
	if (!xdr_seqid4(xdrs, &objp->seqid))
		return (FALSE);
	if (!xdr_stateid4(xdrs, &objp->lock_stateid))
		return (FALSE);
	if (!xdr_offset4(xdrs, &objp->offset))
		return (FALSE);
	if (!xdr_length4(xdrs, &objp->length))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_LOCKU4res(register XDR *xdrs, LOCKU4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_stateid4(xdrs, &objp->LOCKU4res_u.lock_stateid))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_LOOKUP4args(register XDR *xdrs, LOOKUP4args *objp)
{

	if (!xdr_component4(xdrs, &objp->objname))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_LOOKUP4res(register XDR *xdrs, LOOKUP4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_LOOKUPP4res(register XDR *xdrs, LOOKUPP4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_NVERIFY4args(register XDR *xdrs, NVERIFY4args *objp)
{

	if (!xdr_fattr4(xdrs, &objp->obj_attributes))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_NVERIFY4res(register XDR *xdrs, NVERIFY4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_createmode4(register XDR *xdrs, createmode4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_createhow4(register XDR *xdrs, createhow4 *objp)
{

	if (!xdr_createmode4(xdrs, &objp->mode))
		return (FALSE);
	switch (objp->mode) {
	case UNCHECKED4:
	case GUARDED4:
		if (!xdr_fattr4(xdrs, &objp->createhow4_u.createattrs))
			return (FALSE);
		break;
	case EXCLUSIVE4:
		if (!xdr_verifier4(xdrs, objp->createhow4_u.createverf))
			return (FALSE);
		break;
	default:
		return (FALSE);
	}
	return (TRUE);
}

bool_t
xdr_opentype4(register XDR *xdrs, opentype4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_openflag4(register XDR *xdrs, openflag4 *objp)
{

	if (!xdr_opentype4(xdrs, &objp->opentype))
		return (FALSE);
	switch (objp->opentype) {
	case OPEN4_CREATE:
		if (!xdr_createhow4(xdrs, &objp->openflag4_u.how))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_limit_by4(register XDR *xdrs, limit_by4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfs_modified_limit4(register XDR *xdrs, nfs_modified_limit4 *objp)
{

	if (!xdr_uint32_t(xdrs, &objp->num_blocks))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->bytes_per_block))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfs_space_limit4(register XDR *xdrs, nfs_space_limit4 *objp)
{

	if (!xdr_limit_by4(xdrs, &objp->limitby))
		return (FALSE);
	switch (objp->limitby) {
	case NFS_LIMIT_SIZE:
		if (!xdr_uint64_t(xdrs, &objp->nfs_space_limit4_u.filesize))
			return (FALSE);
		break;
	case NFS_LIMIT_BLOCKS:
		if (!xdr_nfs_modified_limit4(xdrs, &objp->nfs_space_limit4_u.
		    mod_blocks))
			return (FALSE);
		break;
	default:
		return (FALSE);
	}
	return (TRUE);
}

bool_t
xdr_open_delegation_type4(register XDR *xdrs, open_delegation_type4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_open_claim_type4(register XDR *xdrs, open_claim_type4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_open_claim_delegate_cur4(register XDR *xdrs, open_claim_delegate_cur4 *objp)
{

	if (!xdr_stateid4(xdrs, &objp->delegate_stateid))
		return (FALSE);
	if (!xdr_component4(xdrs, &objp->file))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_open_claim4(register XDR *xdrs, open_claim4 *objp)
{

	if (!xdr_open_claim_type4(xdrs, &objp->claim))
		return (FALSE);
	switch (objp->claim) {
	case CLAIM_NULL:
		if (!xdr_component4(xdrs, &objp->open_claim4_u.file))
			return (FALSE);
		break;
	case CLAIM_PREVIOUS:
		if (!xdr_open_delegation_type4(xdrs, &objp->open_claim4_u.
		    delegate_type))
			return (FALSE);
		break;
	case CLAIM_DELEGATE_CUR:
		if (!xdr_open_claim_delegate_cur4(xdrs, &objp->open_claim4_u.
		    delegate_cur_info))
			return (FALSE);
		break;
	case CLAIM_DELEGATE_PREV:
		if (!xdr_component4(xdrs, &objp->open_claim4_u.
		    file_delegate_prev))
			return (FALSE);
		break;
	default:
		return (FALSE);
	}
	return (TRUE);
}

bool_t
xdr_OPEN4args(register XDR *xdrs, OPEN4args *objp)
{

	if (!xdr_seqid4(xdrs, &objp->seqid))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->share_access))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->share_deny))
		return (FALSE);
	if (!xdr_open_owner4(xdrs, &objp->owner))
		return (FALSE);
	if (!xdr_openflag4(xdrs, &objp->openhow))
		return (FALSE);
	if (!xdr_open_claim4(xdrs, &objp->claim))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_open_read_delegation4(register XDR *xdrs, open_read_delegation4 *objp)
{

	if (!xdr_stateid4(xdrs, &objp->stateid))
		return (FALSE);
	if (!xdr_bool(xdrs, &objp->recall))
		return (FALSE);
	if (!xdr_nfsace4(xdrs, &objp->permissions))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_open_write_delegation4(register XDR *xdrs, open_write_delegation4 *objp)
{

	if (!xdr_stateid4(xdrs, &objp->stateid))
		return (FALSE);
	if (!xdr_bool(xdrs, &objp->recall))
		return (FALSE);
	if (!xdr_nfs_space_limit4(xdrs, &objp->space_limit))
		return (FALSE);
	if (!xdr_nfsace4(xdrs, &objp->permissions))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_open_delegation4(register XDR *xdrs, open_delegation4 *objp)
{

	if (!xdr_open_delegation_type4(xdrs, &objp->delegation_type))
		return (FALSE);
	switch (objp->delegation_type) {
	case OPEN_DELEGATE_NONE:
		break;
	case OPEN_DELEGATE_READ:
		if (!xdr_open_read_delegation4(xdrs, &objp->open_delegation4_u.
		    read))
			return (FALSE);
		break;
	case OPEN_DELEGATE_WRITE:
		if (!xdr_open_write_delegation4(xdrs, &objp->open_delegation4_u.
		    write))
			return (FALSE);
		break;
	default:
		return (FALSE);
	}
	return (TRUE);
}

bool_t
xdr_OPEN4resok(register XDR *xdrs, OPEN4resok *objp)
{

	if (!xdr_stateid4(xdrs, &objp->stateid))
		return (FALSE);
	if (!xdr_change_info4(xdrs, &objp->cinfo))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->rflags))
		return (FALSE);
	if (!xdr_bitmap4(xdrs, &objp->attrset))
		return (FALSE);
	if (!xdr_open_delegation4(xdrs, &objp->delegation))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_OPEN4res(register XDR *xdrs, OPEN4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_OPEN4resok(xdrs, &objp->OPEN4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_OPENATTR4args(register XDR *xdrs, OPENATTR4args *objp)
{

	if (!xdr_bool(xdrs, &objp->createdir))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_OPENATTR4res(register XDR *xdrs, OPENATTR4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_OPEN_CONFIRM4args(register XDR *xdrs, OPEN_CONFIRM4args *objp)
{

	if (!xdr_stateid4(xdrs, &objp->open_stateid))
		return (FALSE);
	if (!xdr_seqid4(xdrs, &objp->seqid))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_OPEN_CONFIRM4resok(register XDR *xdrs, OPEN_CONFIRM4resok *objp)
{

	if (!xdr_stateid4(xdrs, &objp->open_stateid))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_OPEN_CONFIRM4res(register XDR *xdrs, OPEN_CONFIRM4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_OPEN_CONFIRM4resok(xdrs, &objp->OPEN_CONFIRM4res_u.
		    resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_OPEN_DOWNGRADE4args(register XDR *xdrs, OPEN_DOWNGRADE4args *objp)
{

	if (!xdr_stateid4(xdrs, &objp->open_stateid))
		return (FALSE);
	if (!xdr_seqid4(xdrs, &objp->seqid))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->share_access))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->share_deny))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_OPEN_DOWNGRADE4resok(register XDR *xdrs, OPEN_DOWNGRADE4resok *objp)
{

	if (!xdr_stateid4(xdrs, &objp->open_stateid))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_OPEN_DOWNGRADE4res(register XDR *xdrs, OPEN_DOWNGRADE4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_OPEN_DOWNGRADE4resok(xdrs, &objp->OPEN_DOWNGRADE4res_u.
		    resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_PUTFH4args(register XDR *xdrs, PUTFH4args *objp)
{

	if (!xdr_nfs_fh4(xdrs, &objp->object))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_PUTFH4res(register XDR *xdrs, PUTFH4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_PUTPUBFH4res(register XDR *xdrs, PUTPUBFH4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_PUTROOTFH4res(register XDR *xdrs, PUTROOTFH4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_READ4args(register XDR *xdrs, READ4args *objp)
{

	if (!xdr_stateid4(xdrs, &objp->stateid))
		return (FALSE);
	if (!xdr_offset4(xdrs, &objp->offset))
		return (FALSE);
	if (!xdr_count4(xdrs, &objp->count))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_READ4resok(register XDR *xdrs, READ4resok *objp)
{

	if (!xdr_bool(xdrs, &objp->eof))
		return (FALSE);

#ifdef	IGNORE_RDWR_DATA
	/*
	 * Try to get length of read, and if that
	 * fails, default to 0.  Don't return FALSE
	 * because the other read info will not be
	 * displayed.
	 */
	objp->data.data_val = NULL;
	if (!xdr_u_int(xdrs, &objp->data.data_len))
		objp->data.data_len = 0;
	nfs4_skip_bytes = objp->data.data_len;
#else
	if (!xdr_bytes(xdrs, (char **)&objp->data.data_val,
	    (uint_t *)&objp->data.data_len, ~0))
		return (FALSE);
#endif
	return (TRUE);
}

bool_t
xdr_READ4res(register XDR *xdrs, READ4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_READ4resok(xdrs, &objp->READ4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_READDIR4args(register XDR *xdrs, READDIR4args *objp)
{

	if (!xdr_nfs_cookie4(xdrs, &objp->cookie))
		return (FALSE);
	if (!xdr_verifier4(xdrs, objp->cookieverf))
		return (FALSE);
	if (!xdr_count4(xdrs, &objp->dircount))
		return (FALSE);
	if (!xdr_count4(xdrs, &objp->maxcount))
		return (FALSE);
	if (!xdr_bitmap4(xdrs, &objp->attr_request))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_entry4(register XDR *xdrs, entry4 *objp)
{

	entry4 *tmp_entry4;
	bool_t more_data = TRUE;
	bool_t first_objp = TRUE;

	while (more_data) {

		if (!xdr_nfs_cookie4(xdrs, &objp->cookie))
			return (FALSE);
		if (!xdr_component4(xdrs, &objp->name))
			return (FALSE);
		if (!xdr_fattr4(xdrs, &objp->attrs))
			return (FALSE);

		if (xdrs->x_op == XDR_DECODE) {

			void bzero();

			if (!xdr_bool(xdrs, &more_data))
				return (FALSE);

			if (!more_data) {
				objp->nextentry = NULL;
				break;
			}

			objp->nextentry = (entry4 *)mem_alloc(sizeof (entry4));
			if (objp->nextentry == NULL)
				return (FALSE);
			bzero(objp->nextentry, sizeof (entry4));
			objp = objp->nextentry;

		} else if (xdrs->x_op == XDR_ENCODE) {
			objp = objp->nextentry;
			if (!objp)
				more_data = FALSE;

			if (!xdr_bool(xdrs, &more_data))
				return (FALSE);
		} else {
			tmp_entry4 = objp;
			objp = objp->nextentry;
			if (!objp)
				more_data = FALSE;
			if (!xdr_bool(xdrs, &more_data))
				return (FALSE);
			if (!first_objp)
				mem_free(tmp_entry4, sizeof (entry4));
			else
				first_objp = FALSE;
		}
	}
	return (TRUE);
}

bool_t
xdr_dirlist4(register XDR *xdrs, dirlist4 *objp)
{

	if (!xdr_pointer(xdrs, (char **)&objp->entries, sizeof (entry4),
	    (xdrproc_t)xdr_entry4))
		return (FALSE);
	if (!xdr_bool(xdrs, &objp->eof))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_READDIR4resok(register XDR *xdrs, READDIR4resok *objp)
{

	if (!xdr_verifier4(xdrs, objp->cookieverf))
		return (FALSE);
	if (!xdr_dirlist4(xdrs, &objp->reply))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_READDIR4res(register XDR *xdrs, READDIR4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_READDIR4resok(xdrs, &objp->READDIR4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_READLINK4resok(register XDR *xdrs, READLINK4resok *objp)
{

	if (!xdr_linktext4(xdrs, &objp->link))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_READLINK4res(register XDR *xdrs, READLINK4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_READLINK4resok(xdrs, &objp->READLINK4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_REMOVE4args(register XDR *xdrs, REMOVE4args *objp)
{

	if (!xdr_component4(xdrs, &objp->target))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_REMOVE4resok(register XDR *xdrs, REMOVE4resok *objp)
{

	if (!xdr_change_info4(xdrs, &objp->cinfo))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_REMOVE4res(register XDR *xdrs, REMOVE4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_REMOVE4resok(xdrs, &objp->REMOVE4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_RENAME4args(register XDR *xdrs, RENAME4args *objp)
{

	if (!xdr_component4(xdrs, &objp->oldname))
		return (FALSE);
	if (!xdr_component4(xdrs, &objp->newname))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_RENAME4resok(register XDR *xdrs, RENAME4resok *objp)
{

	if (!xdr_change_info4(xdrs, &objp->source_cinfo))
		return (FALSE);
	if (!xdr_change_info4(xdrs, &objp->target_cinfo))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_RENAME4res(register XDR *xdrs, RENAME4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_RENAME4resok(xdrs, &objp->RENAME4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_RENEW4args(register XDR *xdrs, RENEW4args *objp)
{

	if (!xdr_clientid4(xdrs, &objp->clientid))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_RENEW4res(register XDR *xdrs, RENEW4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_RESTOREFH4res(register XDR *xdrs, RESTOREFH4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_SAVEFH4res(register XDR *xdrs, SAVEFH4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_SECINFO4args(register XDR *xdrs, SECINFO4args *objp)
{

	if (!xdr_component4(xdrs, &objp->name))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_rpc_gss_svc_t(register XDR *xdrs, rpc_gss_svc_t *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_rpcsec_gss_info(register XDR *xdrs, rpcsec_gss_info *objp)
{

	if (!xdr_sec_oid4(xdrs, &objp->oid))
		return (FALSE);
	if (!xdr_qop4(xdrs, &objp->qop))
		return (FALSE);
	if (!xdr_rpc_gss_svc_t(xdrs, &objp->service))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_secinfo4(register XDR *xdrs, secinfo4 *objp)
{

	if (!xdr_uint32_t(xdrs, &objp->flavor))
		return (FALSE);
	switch (objp->flavor) {
	case RPCSEC_GSS:
		if (!xdr_rpcsec_gss_info(xdrs, &objp->secinfo4_u.flavor_info))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_SECINFO4resok(register XDR *xdrs, SECINFO4resok *objp)
{

	if (!xdr_array(xdrs, (char **)&objp->SECINFO4resok_val,
	    (uint_t *)&objp->SECINFO4resok_len, ~0,
	    sizeof (secinfo4), (xdrproc_t)xdr_secinfo4))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_SECINFO4res(register XDR *xdrs, SECINFO4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_SECINFO4resok(xdrs, &objp->SECINFO4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_SETATTR4args(register XDR *xdrs, SETATTR4args *objp)
{

	if (!xdr_stateid4(xdrs, &objp->stateid))
		return (FALSE);
	if (!xdr_fattr4(xdrs, &objp->obj_attributes))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_SETATTR4res(register XDR *xdrs, SETATTR4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	if (!xdr_bitmap4(xdrs, &objp->attrsset))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_SETCLIENTID4args(register XDR *xdrs, SETCLIENTID4args *objp)
{

	if (!xdr_nfs_client_id4(xdrs, &objp->client))
		return (FALSE);
	if (!xdr_cb_client4(xdrs, &objp->callback))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->callback_ident))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_SETCLIENTID4resok(register XDR *xdrs, SETCLIENTID4resok *objp)
{

	if (!xdr_clientid4(xdrs, &objp->clientid))
		return (FALSE);
	if (!xdr_verifier4(xdrs, objp->setclientid_confirm))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_SETCLIENTID4res(register XDR *xdrs, SETCLIENTID4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_SETCLIENTID4resok(xdrs, &objp->SETCLIENTID4res_u.
		    resok4))
			return (FALSE);
		break;
	case NFS4ERR_CLID_INUSE:
		if (!xdr_clientaddr4(xdrs, &objp->SETCLIENTID4res_u.
		    client_using))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_SETCLIENTID_CONFIRM4args(register XDR *xdrs, SETCLIENTID_CONFIRM4args *objp)
{

	if (!xdr_clientid4(xdrs, &objp->clientid))
		return (FALSE);
	if (!xdr_verifier4(xdrs, objp->setclientid_confirm))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_SETCLIENTID_CONFIRM4res(register XDR *xdrs, SETCLIENTID_CONFIRM4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_VERIFY4args(register XDR *xdrs, VERIFY4args *objp)
{

	if (!xdr_fattr4(xdrs, &objp->obj_attributes))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_VERIFY4res(register XDR *xdrs, VERIFY4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_stable_how4(register XDR *xdrs, stable_how4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_WRITE4args(register XDR *xdrs, WRITE4args *objp)
{

	if (!xdr_stateid4(xdrs, &objp->stateid))
		return (FALSE);
	if (!xdr_offset4(xdrs, &objp->offset))
		return (FALSE);
	if (!xdr_stable_how4(xdrs, &objp->stable))
		return (FALSE);

#ifdef IGNORE_RDWR_DATA
	/*
	 * try to get length of write, and if that
	 * fails, default to 0.  Don't return FALSE
	 * because the other write info will not be
	 * displayed (write stateid).
	 */
	objp->data.data_val = NULL;
	if (!xdr_u_int(xdrs, &objp->data.data_len))
		objp->data.data_len = 0;
	nfs4_skip_bytes = objp->data.data_len;
#else
	if (!xdr_bytes(xdrs, (char **)&objp->data.data_val,
	    (uint_t *)&objp->data.data_len, ~0))
		return (FALSE);
#endif
	return (TRUE);
}

bool_t
xdr_WRITE4resok(register XDR *xdrs, WRITE4resok *objp)
{

	if (!xdr_count4(xdrs, &objp->count))
		return (FALSE);
	if (!xdr_stable_how4(xdrs, &objp->committed))
		return (FALSE);
	if (!xdr_verifier4(xdrs, objp->writeverf))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_WRITE4res(register XDR *xdrs, WRITE4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_WRITE4resok(xdrs, &objp->WRITE4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_RELEASE_LOCKOWNER4args(register XDR *xdrs, RELEASE_LOCKOWNER4args *objp)
{

	if (!xdr_lock_owner4(xdrs, &objp->lock_owner))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_RELEASE_LOCKOWNER4res(register XDR *xdrs, RELEASE_LOCKOWNER4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_ILLEGAL4res(register XDR *xdrs, ILLEGAL4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfs_opnum4(register XDR *xdrs, nfs_opnum4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfs_argop4(register XDR *xdrs, nfs_argop4 *objp)
{
	nfs4_skip_bytes = 0;
	if (!xdr_nfs_opnum4(xdrs, &objp->argop))
		return (FALSE);
	switch (objp->argop) {
	case OP_ACCESS:
		if (!xdr_ACCESS4args(xdrs, &objp->nfs_argop4_u.opaccess))
			return (FALSE);
		break;
	case OP_CLOSE:
		if (!xdr_CLOSE4args(xdrs, &objp->nfs_argop4_u.opclose))
			return (FALSE);
		break;
	case OP_COMMIT:
		if (!xdr_COMMIT4args(xdrs, &objp->nfs_argop4_u.opcommit))
			return (FALSE);
		break;
	case OP_CREATE:
		if (!xdr_CREATE4args(xdrs, &objp->nfs_argop4_u.opcreate))
			return (FALSE);
		break;
	case OP_DELEGPURGE:
		if (!xdr_DELEGPURGE4args(xdrs, &objp->nfs_argop4_u.
		    opdelegpurge))
			return (FALSE);
		break;
	case OP_DELEGRETURN:
		if (!xdr_DELEGRETURN4args(xdrs, &objp->nfs_argop4_u.
		    opdelegreturn))
			return (FALSE);
		break;
	case OP_GETATTR:
		if (!xdr_GETATTR4args(xdrs, &objp->nfs_argop4_u.
		    opgetattr))
			return (FALSE);
		break;
	case OP_GETFH:
		break;
	case OP_LINK:
		if (!xdr_LINK4args(xdrs, &objp->nfs_argop4_u.oplink))
			return (FALSE);
		break;
	case OP_LOCK:
		if (!xdr_LOCK4args(xdrs, &objp->nfs_argop4_u.oplock))
			return (FALSE);
		break;
	case OP_LOCKT:
		if (!xdr_LOCKT4args(xdrs, &objp->nfs_argop4_u.oplockt))
			return (FALSE);
		break;
	case OP_LOCKU:
		if (!xdr_LOCKU4args(xdrs, &objp->nfs_argop4_u.oplocku))
			return (FALSE);
		break;
	case OP_LOOKUP:
		if (!xdr_LOOKUP4args(xdrs, &objp->nfs_argop4_u.oplookup))
			return (FALSE);
		break;
	case OP_LOOKUPP:
		break;
	case OP_NVERIFY:
		if (!xdr_NVERIFY4args(xdrs, &objp->nfs_argop4_u.opnverify))
			return (FALSE);
		break;
	case OP_OPEN:
		if (!xdr_OPEN4args(xdrs, &objp->nfs_argop4_u.opopen))
			return (FALSE);
		break;
	case OP_OPENATTR:
		if (!xdr_OPENATTR4args(xdrs, &objp->nfs_argop4_u.opopenattr))
			return (FALSE);
		break;
	case OP_OPEN_CONFIRM:
		if (!xdr_OPEN_CONFIRM4args(xdrs, &objp->nfs_argop4_u.
		    opopen_confirm))
			return (FALSE);
		break;
	case OP_OPEN_DOWNGRADE:
		if (!xdr_OPEN_DOWNGRADE4args(xdrs, &objp->nfs_argop4_u.
		    opopen_downgrade))
			return (FALSE);
		break;
	case OP_PUTFH:
		if (!xdr_PUTFH4args(xdrs, &objp->nfs_argop4_u.opputfh))
			return (FALSE);
		break;
	case OP_PUTPUBFH:
		break;
	case OP_PUTROOTFH:
		break;
	case OP_READ:
		if (!xdr_READ4args(xdrs, &objp->nfs_argop4_u.opread))
			return (FALSE);
		break;
	case OP_READDIR:
		if (!xdr_READDIR4args(xdrs, &objp->nfs_argop4_u.opreaddir))
			return (FALSE);
		break;
	case OP_READLINK:
		break;
	case OP_REMOVE:
		if (!xdr_REMOVE4args(xdrs, &objp->nfs_argop4_u.opremove))
			return (FALSE);
		break;
	case OP_RENAME:
		if (!xdr_RENAME4args(xdrs, &objp->nfs_argop4_u.oprename))
			return (FALSE);
		break;
	case OP_RENEW:
		if (!xdr_RENEW4args(xdrs, &objp->nfs_argop4_u.oprenew))
			return (FALSE);
		break;
	case OP_RESTOREFH:
		break;
	case OP_SAVEFH:
		break;
	case OP_SECINFO:
		if (!xdr_SECINFO4args(xdrs, &objp->nfs_argop4_u.opsecinfo))
			return (FALSE);
		break;
	case OP_SETATTR:
		if (!xdr_SETATTR4args(xdrs, &objp->nfs_argop4_u.opsetattr))
			return (FALSE);
		break;
	case OP_SETCLIENTID:
		if (!xdr_SETCLIENTID4args(xdrs, &objp->nfs_argop4_u.
		    opsetclientid))
			return (FALSE);
		break;
	case OP_SETCLIENTID_CONFIRM:
		if (!xdr_SETCLIENTID_CONFIRM4args(xdrs, &objp->nfs_argop4_u.
		    opsetclientid_confirm))
			return (FALSE);
		break;
	case OP_VERIFY:
		if (!xdr_VERIFY4args(xdrs, &objp->nfs_argop4_u.opverify))
			return (FALSE);
		break;
	case OP_WRITE:
		if (!xdr_WRITE4args(xdrs, &objp->nfs_argop4_u.opwrite))
			return (FALSE);
		break;
	case OP_RELEASE_LOCKOWNER:
		if (!xdr_RELEASE_LOCKOWNER4args(xdrs,
		    &objp->nfs_argop4_u.oprelease_lockowner))
			return (FALSE);
		break;
	case OP_ILLEGAL:
		break;
	default:
		return (FALSE);
	}
	return (TRUE);
}

bool_t
xdr_nfs_resop4(register XDR *xdrs, nfs_resop4 *objp)
{
	nfs4_skip_bytes = 0;
	if (!xdr_nfs_opnum4(xdrs, &objp->resop))
		return (FALSE);
	switch (objp->resop) {
	case OP_ACCESS:
		if (!xdr_ACCESS4res(xdrs, &objp->nfs_resop4_u.opaccess))
			return (FALSE);
		break;
	case OP_CLOSE:
		if (!xdr_CLOSE4res(xdrs, &objp->nfs_resop4_u.opclose))
			return (FALSE);
		break;
	case OP_COMMIT:
		if (!xdr_COMMIT4res(xdrs, &objp->nfs_resop4_u.opcommit))
			return (FALSE);
		break;
	case OP_CREATE:
		if (!xdr_CREATE4res(xdrs, &objp->nfs_resop4_u.opcreate))
			return (FALSE);
		break;
	case OP_DELEGPURGE:
		if (!xdr_DELEGPURGE4res(xdrs, &objp->nfs_resop4_u.opdelegpurge))
			return (FALSE);
		break;
	case OP_DELEGRETURN:
		if (!xdr_DELEGRETURN4res(xdrs, &objp->nfs_resop4_u.
		    opdelegreturn))
			return (FALSE);
		break;
	case OP_GETATTR:
		if (!xdr_GETATTR4res(xdrs, &objp->nfs_resop4_u.opgetattr))
			return (FALSE);
		break;
	case OP_GETFH:
		if (!xdr_GETFH4res(xdrs, &objp->nfs_resop4_u.opgetfh))
			return (FALSE);
		break;
	case OP_LINK:
		if (!xdr_LINK4res(xdrs, &objp->nfs_resop4_u.oplink))
			return (FALSE);
		break;
	case OP_LOCK:
		if (!xdr_LOCK4res(xdrs, &objp->nfs_resop4_u.oplock))
			return (FALSE);
		break;
	case OP_LOCKT:
		if (!xdr_LOCKT4res(xdrs, &objp->nfs_resop4_u.oplockt))
			return (FALSE);
		break;
	case OP_LOCKU:
		if (!xdr_LOCKU4res(xdrs, &objp->nfs_resop4_u.oplocku))
			return (FALSE);
		break;
	case OP_LOOKUP:
		if (!xdr_LOOKUP4res(xdrs, &objp->nfs_resop4_u.oplookup))
			return (FALSE);
		break;
	case OP_LOOKUPP:
		if (!xdr_LOOKUPP4res(xdrs, &objp->nfs_resop4_u.oplookupp))
			return (FALSE);
		break;
	case OP_NVERIFY:
		if (!xdr_NVERIFY4res(xdrs, &objp->nfs_resop4_u.opnverify))
			return (FALSE);
		break;
	case OP_OPEN:
		if (!xdr_OPEN4res(xdrs, &objp->nfs_resop4_u.opopen))
			return (FALSE);
		break;
	case OP_OPENATTR:
		if (!xdr_OPENATTR4res(xdrs, &objp->nfs_resop4_u.opopenattr))
			return (FALSE);
		break;
	case OP_OPEN_CONFIRM:
		if (!xdr_OPEN_CONFIRM4res(xdrs, &objp->nfs_resop4_u.
		    opopen_confirm))
			return (FALSE);
		break;
	case OP_OPEN_DOWNGRADE:
		if (!xdr_OPEN_DOWNGRADE4res(xdrs, &objp->nfs_resop4_u.
		    opopen_downgrade))
			return (FALSE);
		break;
	case OP_PUTFH:
		if (!xdr_PUTFH4res(xdrs, &objp->nfs_resop4_u.opputfh))
			return (FALSE);
		break;
	case OP_PUTPUBFH:
		if (!xdr_PUTPUBFH4res(xdrs, &objp->nfs_resop4_u.opputpubfh))
			return (FALSE);
		break;
	case OP_PUTROOTFH:
		if (!xdr_PUTROOTFH4res(xdrs, &objp->nfs_resop4_u.opputrootfh))
			return (FALSE);
		break;
	case OP_READ:
		if (!xdr_READ4res(xdrs, &objp->nfs_resop4_u.opread))
			return (FALSE);
		break;
	case OP_READDIR:
		if (!xdr_READDIR4res(xdrs, &objp->nfs_resop4_u.opreaddir))
			return (FALSE);
		break;
	case OP_READLINK:
		if (!xdr_READLINK4res(xdrs, &objp->nfs_resop4_u.opreadlink))
			return (FALSE);
		break;
	case OP_REMOVE:
		if (!xdr_REMOVE4res(xdrs, &objp->nfs_resop4_u.opremove))
			return (FALSE);
		break;
	case OP_RENAME:
		if (!xdr_RENAME4res(xdrs, &objp->nfs_resop4_u.oprename))
			return (FALSE);
		break;
	case OP_RENEW:
		if (!xdr_RENEW4res(xdrs, &objp->nfs_resop4_u.oprenew))
			return (FALSE);
		break;
	case OP_RESTOREFH:
		if (!xdr_RESTOREFH4res(xdrs, &objp->nfs_resop4_u.oprestorefh))
			return (FALSE);
		break;
	case OP_SAVEFH:
		if (!xdr_SAVEFH4res(xdrs, &objp->nfs_resop4_u.opsavefh))
			return (FALSE);
		break;
	case OP_SECINFO:
		if (!xdr_SECINFO4res(xdrs, &objp->nfs_resop4_u.opsecinfo))
			return (FALSE);
		break;
	case OP_SETATTR:
		if (!xdr_SETATTR4res(xdrs, &objp->nfs_resop4_u.opsetattr))
			return (FALSE);
		break;
	case OP_SETCLIENTID:
		if (!xdr_SETCLIENTID4res(xdrs, &objp->nfs_resop4_u.
		    opsetclientid))
			return (FALSE);
		break;
	case OP_SETCLIENTID_CONFIRM:
		if (!xdr_SETCLIENTID_CONFIRM4res(xdrs, &objp->nfs_resop4_u.
		    opsetclientid_confirm))
			return (FALSE);
		break;
	case OP_VERIFY:
		if (!xdr_VERIFY4res(xdrs, &objp->nfs_resop4_u.opverify))
			return (FALSE);
		break;
	case OP_WRITE:
		if (!xdr_WRITE4res(xdrs, &objp->nfs_resop4_u.opwrite))
			return (FALSE);
		break;
	case OP_RELEASE_LOCKOWNER:
		if (!xdr_RELEASE_LOCKOWNER4res(xdrs,
		    &objp->nfs_resop4_u.oprelease_lockowner))
			return (FALSE);
		break;
	case OP_ILLEGAL:
		if (!xdr_ILLEGAL4res(xdrs, &objp->nfs_resop4_u.opillegal))
			return (FALSE);
		break;
	default:
		return (FALSE);
	}
	return (TRUE);
}

bool_t
xdr_COMPOUND4args(register XDR *xdrs, COMPOUND4args *objp)
{

	if (!xdr_utf8string(xdrs, &objp->tag))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->minorversion))
		return (FALSE);
	if (!xdr_array(xdrs, (char **)&objp->argarray.argarray_val,
	    (uint_t *)&objp->argarray.argarray_len, ~0,
	    sizeof (nfs_argop4), (xdrproc_t)xdr_nfs_argop4))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_COMPOUND4res(register XDR *xdrs, COMPOUND4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	if (!xdr_utf8string(xdrs, &objp->tag))
		return (FALSE);
	if (!xdr_array(xdrs, (char **)&objp->resarray.resarray_val,
	    (uint_t *)&objp->resarray.resarray_len, ~0,
	    sizeof (nfs_resop4), (xdrproc_t)xdr_nfs_resop4))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_CB_GETATTR4args(register XDR *xdrs, CB_GETATTR4args *objp)
{

	if (!xdr_nfs_fh4(xdrs, &objp->fh))
		return (FALSE);
	if (!xdr_bitmap4(xdrs, &objp->attr_request))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_CB_GETATTR4resok(register XDR *xdrs, CB_GETATTR4resok *objp)
{

	if (!xdr_fattr4(xdrs, &objp->obj_attributes))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_CB_GETATTR4res(register XDR *xdrs, CB_GETATTR4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	switch (objp->status) {
	case NFS4_OK:
		if (!xdr_CB_GETATTR4resok(xdrs, &objp->CB_GETATTR4res_u.resok4))
			return (FALSE);
		break;
	}
	return (TRUE);
}

bool_t
xdr_CB_RECALL4args(register XDR *xdrs, CB_RECALL4args *objp)
{

	if (!xdr_stateid4(xdrs, &objp->stateid))
		return (FALSE);
	if (!xdr_bool(xdrs, &objp->truncate))
		return (FALSE);
	if (!xdr_nfs_fh4(xdrs, &objp->fh))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_CB_RECALL4res(register XDR *xdrs, CB_RECALL4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_CB_ILLEGAL4res(register XDR *xdrs, CB_ILLEGAL4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfs_cb_opnum4(register XDR *xdrs, nfs_cb_opnum4 *objp)
{

	if (!xdr_enum(xdrs, (enum_t *)objp))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_nfs_cb_argop4(register XDR *xdrs, nfs_cb_argop4 *objp)
{

	if (!xdr_u_int(xdrs, &objp->argop))
		return (FALSE);
	switch (objp->argop) {
	case OP_CB_GETATTR:
		if (!xdr_CB_GETATTR4args(xdrs, &objp->nfs_cb_argop4_u.
		    opcbgetattr))
			return (FALSE);
		break;
	case OP_CB_RECALL:
		if (!xdr_CB_RECALL4args(xdrs, &objp->nfs_cb_argop4_u.
		    opcbrecall))
			return (FALSE);
		break;
	case OP_CB_ILLEGAL:
		break;
	default:
		return (FALSE);
	}
	return (TRUE);
}

bool_t
xdr_nfs_cb_resop4(register XDR *xdrs, nfs_cb_resop4 *objp)
{

	if (!xdr_u_int(xdrs, &objp->resop))
		return (FALSE);
	switch (objp->resop) {
	case OP_CB_GETATTR:
		if (!xdr_CB_GETATTR4res(xdrs, &objp->nfs_cb_resop4_u.
		    opcbgetattr))
			return (FALSE);
		break;
	case OP_CB_RECALL:
		if (!xdr_CB_RECALL4res(xdrs, &objp->nfs_cb_resop4_u.opcbrecall))
			return (FALSE);
		break;
	case OP_CB_ILLEGAL:
		if (!xdr_CB_ILLEGAL4res(xdrs,
		    &objp->nfs_cb_resop4_u.opcbillegal))
			return (FALSE);
		break;
	default:
		return (FALSE);
	}
	return (TRUE);
}

bool_t
xdr_CB_COMPOUND4args(register XDR *xdrs, CB_COMPOUND4args *objp)
{

	if (!xdr_utf8string(xdrs, &objp->tag))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->minorversion))
		return (FALSE);
	if (!xdr_uint32_t(xdrs, &objp->callback_ident))
		return (FALSE);
	if (!xdr_array(xdrs, (char **)&objp->argarray.argarray_val,
	    (uint_t *)&objp->argarray.argarray_len, ~0,
	    sizeof (nfs_cb_argop4), (xdrproc_t)xdr_nfs_cb_argop4))
		return (FALSE);
	return (TRUE);
}

bool_t
xdr_CB_COMPOUND4res(register XDR *xdrs, CB_COMPOUND4res *objp)
{

	if (!xdr_nfsstat4(xdrs, &objp->status))
		return (FALSE);
	if (!xdr_utf8string(xdrs, &objp->tag))
		return (FALSE);
	if (!xdr_array(xdrs, (char **)&objp->resarray.resarray_val,
	    (uint_t *)&objp->resarray.resarray_len, ~0,
	    sizeof (nfs_cb_resop4), (xdrproc_t)xdr_nfs_cb_resop4))
		return (FALSE);
	return (TRUE);
}
